
  /*global $ returnCitySN require ClipboardJS wx err process*/
import axios from './config/axios.config.js';

function startConfig(config){
    wx.config({
        debug:false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
        appId: config.appId, // 必填，公众号的唯一标识
        timestamp: config.timestamp, // 必填，生成签名的时间戳
        nonceStr: config.nonceStr, // 必填，生成签名的随机串
        signature: config.signature,// 必填，签名
        jsApiList: [
            'chooseWXPay',
        ] // 必填，需要使用的JS接口列表
    });
}

// 微信支付 (仅支持支付页面调用）
export function wxPay(config,_this,orderId){

    function pay(signData){
        wx.chooseWXPay({
            timestamp: signData.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
            nonceStr: signData.nonceStr, // 支付签名随机串，不长于 32 位
            package: signData.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
            signType: signData.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
            paySign: signData.paySign, // 支付签名
            success: function (res) {
                // getRealOrders(orderSn);
            },
            fail: function (error) {
                console.log('check api fail:', err)
            }
        });
    }
    wx.ready(function () {
        wx.checkJsApi({
            jsApiList: [
                'chooseWXPay'
            ],
            success: function (res) {
                /* axios.post('/log/behavior',{
                    stay_time: duration,
                    read_id: getUrlParam('id') || 0
                }).then(res=>{
                    console.log(res);
                    pay(res.data);
                }) */
            }
        });
    });
}

//errN: 每次调用wxStart的总次数， 每次重复调用wx.error 满2次，则中断 此方法中的操作   
export function wxStart(callback, errN = 2, errUrl = ""){
    //判断 是否进入微信配置错误
    let isErr = false;

    let href = location.origin;
    let url = location.href.split('#')[0];  
    var u = navigator.userAgent;
    var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

    if(sessionStorage.getItem('pathname') && isiOS){
        url = `${sessionStorage.getItem('pathname')}`;
    }
    if(errUrl != ""){
        url = errUrl;
    }

    axios.post('/wechat/jssdk',{
        url:url
    }).then(res=>{
        if(res.code == 0){
            wx.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                appId: res.data.appId, // 必填，公众号的唯一标识
                timestamp: res.data.timestamp, // 必填，生成签名的时间戳
                nonceStr: res.data.nonceStr, // 必填，生成签名的随机串
                signature: res.data.signature,// 必填，签名，见附录1
                jsApiList: [
                    'chooseWXPay'
                ] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
            });

            wx.ready(()=>{
                if(!isErr) {
                    if(callback){
                        callback('success');
                    }
                }
            })

            wx.error((res)=>{
                isErr = true;    
                if(errN > 0) {
                    wxStart(callback, --errN, location.href.split('#')[0])
                }else if(callback){
                    callback('exception', '微信服务异常，请稍后再试~');
                }   
            })

        }else {
            if(callback){
                callback('err', res.msg);
            }            
        }
    })
}

class wxApi{}
Object.assign(wxApi.prototype,{
    wxPay,
    wxStart
})
const wxapi = new wxApi();
export default wxapi;